package com.an.blog.service;

import com.an.blog.admin.domain.BlogTag;
import com.an.blog.admin.domain.bo.BlogTagBo;
import com.an.blog.admin.domain.vo.BlogTagVo;
import com.an.blog.web.domain.vo.BlogTagWebVo;
import com.an.common.core.domain.PageQuery;
import com.an.common.core.page.TableDataInfo;

import java.util.Collection;
import java.util.List;

/**
 * 博客标签Service接口
 *
 * @author Ann
 * @date 2023-05-08
 */
public interface IBlogTagService {

    /**
     * /**
     * 查询博客标签
     *
     * @param tagId 标签id
     * @return {@link BlogTagVo }
     * @author: Ann
     * @createDate: 2023/05/18 18:55:02
     * @version: 1.0.0
     */
    BlogTagVo queryById(Long tagId);

    /**
     * 查询博客标签列表
     *
     * @param bo        业务对象
     * @param pageQuery 页面查询
     * @return {@link TableDataInfo }<{@link BlogTagVo }>
     * @author: Ann
     * @createDate: 2023/05/18 18:55:52
     * @version: 1.0.0
     */
    TableDataInfo<BlogTagVo> queryPageList(BlogTagBo bo, PageQuery pageQuery);

    /**
     * 查询博客标签列表
     *
     * @param bo 业务对象
     * @return {@link List }<{@link BlogTagVo }>
     * @author: Ann
     * @createDate: 2023/05/18 18:54:37
     * @version: 1.0.0
     */
    List<BlogTagVo> queryList(BlogTagBo bo);

    /**
     * 新增博客标签
     *
     * @param bo 业务对象
     * @return {@link Boolean }
     * @author: Ann
     * @createDate: 2023/05/18 18:55:37
     * @version: 1.0.0
     */
    Boolean insertByBo(BlogTagBo bo);

    /**
     * 修改博客标签
     *
     * @param bo 业务对象
     * @return {@link Boolean }
     * @author: Ann
     * @createDate: 2023/05/18 18:55:39
     * @version: 1.0.0
     */
    Boolean updateByBo(BlogTagBo bo);

    /**
     * 校验并批量删除博客标签信息
     *
     * @param ids     id
     * @param isValid 是有效
     * @return {@link Boolean }
     * @author: Ann
     * @createDate: 2023/05/18 18:55:41
     * @version: 1.0.0
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 更新标签状态
     *
     * @param bo 业务对象
     * @return int
     * @author: Ann
     * @createDate: 2023/05/09 18:39:36
     * @version: 1.0.0
     */
    int updateTagStatus(BlogTagBo bo);

    /**
     * 查询id和名称列表
     *
     * @return {@link List }<{@link BlogTagWebVo }>
     * @author: Ann
     * @createDate: 2023/05/18 18:57:52
     * @version: 1.0.0
     */
    List<BlogTagWebVo> queryIdAndNameList();

    /**
     * 查询文章id标记名称
     *
     * @param articleId 文章id
     * @return {@link List }<{@link BlogTag }>
     * @author: Ann
     * @createDate: 2023/06/07 19:04:47
     * @version: 1.0.0
     */
    List<BlogTag> queryTagNamesByArticleId(Long articleId);
}
